Exhaustive Testing as a Verification Technique†
نویسندگان
چکیده
For a safety-critical system, i.e., a system whose consequences of failure are very high, it is not possible to rely upon testing to provide the necessary verification. The difficulties arise mainly from the shear number of tests that are required to permit statistically meaningful conclusions to be drawn about the system. Other difficulties with testing include failure to observe erroneous output when it occurs and incorrectly defining the operational profile from which to select inputs. Goodenough and Gerhart observed that exhaustive testing of a software system amounts to a proof of the software. This is an appealing thought for safety-critical systems because establishing proofs of system properties by more traditional techniques is difficult at best and often depends on questionable assumptions such as assuming correct translation by a compiler. Unfortunately, however, if testing that yields a statistical conclusion is infeasible it would seem that exhaustive testing would be also. In general, exhaustive testing is infeasible. However, this infeasibility is a direct result of the goal of testing for overall functional correctness. In considering the general issue of how safety-critical systems might be tested, we have concluded that a different view of testing is required. The view we advocate is that testing should be used to show significant properties of safety-critical software systems rather than overall correctness. This approach to testing is analogous to the use of formal verification to demonstrate properties rather that correctness. When testing is used as a technique to establish a property, the property of interest determines in large part the number of tests required. This is the case no matter whether the goal is to establish properties in a statistical sense or in the sense of a proof using exhaustive testing. By careful definition of the property and by the application of a technique called specification limitation, we have been able to prove a number of significant properties of a large software system by exhaustive testing. In this paper we formalize the notion of specification limitation and show how it can be applied in practice. We present the details of a complex software system and associated properties that were established by applying the technique. Exhaustive Testing As A Verification Technique
منابع مشابه
Functional Verification Acceleration through the Removal of Redundant Simulation
The real-world challenge of verification is to meet a design’s testing requirements as quickly as possible without inhibiting the completeness of the verification effort. This paper introduces a new method, called the reduction of redundancy (ROR), which enables this goal. The stochastic nature of today's leading functional verification technique, directed random verification, can lead to waste...
متن کاملNew Approach to Application Software Quality Verification
Fujitsu has developed a technique that can automatically prepare test scenarios/ data, run the tests, and check the results based on a formal description of the application’s external specifications. This eliminates problems that can arise in conventional test methods, such as failure to consider all possible test cases or data values, the existence of too many test cases for exhaustive testing...
متن کاملA Tool for Requirements-Based Programming
In order to demonstrate the correctness of a system, developers today must resort to either exhaustive testing or some combination of testing and formal verification following the use of appropriate methods in the development process. While formal methods have afforded numerous successes, their application today presents serious issues, e.g., costs to gear up to apply them (time, expensive staf...
متن کاملEstimating Event Lifetimes for Distributed Runtime Verification
Runtime system verification has been proposed as a form of dynamic verification of software systems which can be applied in settings where complete static verification or exhaustive system testing is not practical. Runtime verification checks properties against runtime events generated during the operation of a system. Current approaches to runtime verification assume that runtime events are ti...
متن کاملType Targeted Testing
We present a new technique called type targeted testing, which translates precise refinement types into comprehensive test-suites. The key insight behind our approach is that through the lens of SMT solvers, refinement types can also be viewed as a high-level, declarative, test generation technique, wherein types are converted to SMT queries whose models can be decoded into concrete program inp...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2008